import { getAddressData } from 'pub-bbx-utils';
import useFormMultiLanguage from '@hooks/useFormMultiLanguage'
// 国际化灰度
const { internationalGray } = useFormMultiLanguage();

/** 格式化区域 */
export function fmtDist(value, separator = '-'){
  const { country, province, city, dist ,street } = getAddressData(value)
  let disArr = [ country, province, city, dist, street ].filter(item => !!item);

  return disArr.join(separator)
}

// 给base-dist组件设置初始值，
// base-dist有数组和对象两种值，当设置数组类型的值时，需要根据是否国际化租户确定是否要传入国家字段
export function setBaseDistValue(value){
  if(!value) return []
  // 国际化地址组件接收的第一个是国家，非国际化组件第一个是省
  let { country = '', province, city, dist, street } = getAddressData(value) || {};
  let address = [ province, city, dist, street ];

  // 查找第一个没有值的字段
  const index = address.findIndex(item => !item);
  if(index >= 0){
    // 截取第一个没有值前面的数据，如[ 浙江省, '', 西湖区 ];此时address=[浙江省]
    address = address.slice(0, index)
  }

  // 当国家字段有值或address有值时，才拼接
  if(country || address.length) {
    address = [ country, ...address ];
  }

  return address;
}

// 通过传入的国家省市区地址数组，根据国际化灰度判断取出数据
export function baseDistValueToObject(value){
  if(!value) return {};
  
  // 国际化地址组件返回的第一个是国家，非国际化组件第一个返回的是省
  let [country, province, city, dist] = value
  if(!internationalGray){
    [province, city, dist] = value
  }

  return {
    country: country || '', 
    province: province || '', 
    city: city || '', 
    dist: dist || ''
  }
}

// 传递给搜索接口，当国家字段为非真时，不传递国家
export function searchAddressObjectParams(value){
  if(!value) return {};

  let newValue = {...value };

  if(!newValue.country){
    delete newValue.country;
  }

  return { ...newValue }
}